In recent years, there has been a plethora of innovation in the field of networking. These innovations have included the introduction of network operating systems for providing a common platform for programming forwarding elements by different vendors, controller designs for remotely configuring the local control planes of forwarding elements, and schemes for implementing multiple logical networks on shared physical network fabric.
However, none of these innovations have dealt with complexity of managing the local control planes of the managed forwarding elements, and the problems that these local control planes create for hassle-free network management. Many bugs in network forwarding elements are the result of the local control plane software, and not directly from hardware. Moreover, developing and maintaining this software infrastructure is time-consuming and expensive, as it must be ported for each new chip that is developed. Also, traditional designs often have problems of keeping per-message consistency when updating the network. Specifically, the two-tiered control plane (i.e., the global controller and the collection of local switch controllers) is a complicated distributed system with the typical associated state management problems. Simply maintaining the forwarding rule table is a very challenging task. It is known that installing forwarding rules in an ad-hoc manner can lead to transient configuration problems, such as black-holes or path loops.